Fixed broken list-removal code.
authorOwen Taylor <otaylor@gtk.org>
Thu, 11 Jun 1998 17:52:12 +0000 (17:52 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Thu, 11 Jun 1998 17:52:12 +0000 (17:52 +0000)
Thu Jun 11 13:09:00 1998  Owen Taylor  <otaylor@gtk.org>

* gtk/gtktext.c (remove_cache_line): Fixed broken
list-removal code.

* gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr)
Check bounds before deleting.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktext.c

index d4c313a811917a2cef354efbcdf2dc950442c277..0efb63f26eec1b0990eb042b0183d79229553a23 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Thu Jun 11 13:09:00 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * gtk/gtktext.c (remove_cache_line): Fixed broken
+       list-removal code.
+
+       * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr)
+       Check bounds before deleting.
+
 Wed Jun 10 23:21:33 1998  Owen Taylor  <otaylor@gtk.org>
 
        * autogen.sh: Support ACLOCAL_FLAGS
index d4c313a811917a2cef354efbcdf2dc950442c277..0efb63f26eec1b0990eb042b0183d79229553a23 100644 (file)
@@ -1,3 +1,11 @@
+Thu Jun 11 13:09:00 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * gtk/gtktext.c (remove_cache_line): Fixed broken
+       list-removal code.
+
+       * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr)
+       Check bounds before deleting.
+
 Wed Jun 10 23:21:33 1998  Owen Taylor  <otaylor@gtk.org>
 
        * autogen.sh: Support ACLOCAL_FLAGS
index d4c313a811917a2cef354efbcdf2dc950442c277..0efb63f26eec1b0990eb042b0183d79229553a23 100644 (file)
@@ -1,3 +1,11 @@
+Thu Jun 11 13:09:00 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * gtk/gtktext.c (remove_cache_line): Fixed broken
+       list-removal code.
+
+       * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr)
+       Check bounds before deleting.
+
 Wed Jun 10 23:21:33 1998  Owen Taylor  <otaylor@gtk.org>
 
        * autogen.sh: Support ACLOCAL_FLAGS
index d4c313a811917a2cef354efbcdf2dc950442c277..0efb63f26eec1b0990eb042b0183d79229553a23 100644 (file)
@@ -1,3 +1,11 @@
+Thu Jun 11 13:09:00 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * gtk/gtktext.c (remove_cache_line): Fixed broken
+       list-removal code.
+
+       * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr)
+       Check bounds before deleting.
+
 Wed Jun 10 23:21:33 1998  Owen Taylor  <otaylor@gtk.org>
 
        * autogen.sh: Support ACLOCAL_FLAGS
index d4c313a811917a2cef354efbcdf2dc950442c277..0efb63f26eec1b0990eb042b0183d79229553a23 100644 (file)
@@ -1,3 +1,11 @@
+Thu Jun 11 13:09:00 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * gtk/gtktext.c (remove_cache_line): Fixed broken
+       list-removal code.
+
+       * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr)
+       Check bounds before deleting.
+
 Wed Jun 10 23:21:33 1998  Owen Taylor  <otaylor@gtk.org>
 
        * autogen.sh: Support ACLOCAL_FLAGS
index d4c313a811917a2cef354efbcdf2dc950442c277..0efb63f26eec1b0990eb042b0183d79229553a23 100644 (file)
@@ -1,3 +1,11 @@
+Thu Jun 11 13:09:00 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * gtk/gtktext.c (remove_cache_line): Fixed broken
+       list-removal code.
+
+       * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr)
+       Check bounds before deleting.
+
 Wed Jun 10 23:21:33 1998  Owen Taylor  <otaylor@gtk.org>
 
        * autogen.sh: Support ACLOCAL_FLAGS
index d4c313a811917a2cef354efbcdf2dc950442c277..0efb63f26eec1b0990eb042b0183d79229553a23 100644 (file)
@@ -1,3 +1,11 @@
+Thu Jun 11 13:09:00 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * gtk/gtktext.c (remove_cache_line): Fixed broken
+       list-removal code.
+
+       * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr)
+       Check bounds before deleting.
+
 Wed Jun 10 23:21:33 1998  Owen Taylor  <otaylor@gtk.org>
 
        * autogen.sh: Support ACLOCAL_FLAGS
index 47d63fcc534c737c795d1f8c66813b4a3dcc6b3f..13fd9cb43a84e4476fbb0c64bf6333c19c60df54 100644 (file)
@@ -1625,7 +1625,11 @@ gtk_text_delete_text    (GtkEditable       *editable,
                         gint               start_pos,
                         gint               end_pos)
 {
-  GtkText *text = GTK_TEXT (editable);
+  GtkText *text;
+  
+  g_return_if_fail (start_pos >= 0);
+
+  text = GTK_TEXT (editable);
   
   gtk_text_set_point (text, start_pos);
   if (end_pos < 0)
@@ -3262,20 +3266,17 @@ remove_cache_line (GtkText* text, GList* member)
 {
   GList *list;
 
+  if (member == NULL)
+    return NULL;
+
   if (member == text->line_start_cache)
-    {
-      if (text->line_start_cache)
-       text->line_start_cache = text->line_start_cache->next;
-    }
+    text->line_start_cache = text->line_start_cache->next;
 
   if (member->prev)
-    {
-      list = member->prev;
-  
-      list->next = member->next;
-      if (list->next)
-       list->next->prev = list;
-    }
+    member->prev->next = member->next;
+
+  if (member->next)
+    member->next->prev = member->prev;
 
   list = member->next;
   
@@ -3497,7 +3498,8 @@ gtk_text_delete_forward_character (GtkText *text)
     gtk_editable_delete_selection (editable);
   else
     {
-      gtk_editable_delete_text (editable, text->point.index, text->point.index + 1);
+      if (text->point.index + 1 <= TEXT_LENGTH (text))
+       gtk_editable_delete_text (editable, text->point.index, text->point.index + 1);
     }
 }
 
@@ -3511,7 +3513,8 @@ gtk_text_delete_backward_character (GtkText *text)
     gtk_editable_delete_selection (editable);
   else
     {
-      gtk_editable_delete_text (editable, text->point.index - 1, text->point.index);
+      if (text->point.index > 0)
+       gtk_editable_delete_text (editable, text->point.index - 1, text->point.index);
     }
 }